//导入对话框组件
import dialog from '@/components/dialog/dialog'
import Vue from 'vue'


let dialogVue;
function createDialog() {
  // 这里使用了 VUE 来构建一个 vnode
  // 值得注意的是， $mount() 函数没有填写任何的 dom 节点
  // 这样就变成了一个 未挂载 的 vnode
  const vnode = new Vue({
    render: h => h(dialog)
  }).$mount();

  // 手动 将 生成的对应 dom 插进 body 里面
  document.body.appendChild(vnode.$el)
  // 返回当前实例  的 vue 对象
  // 没错，就是 $children[0]
  return vnode.$children[0]
}

// 装载提示消息组件的DOM容器
const div = document.createElement('div')
document.body.appendChild(div)

function setDialog(options) {
  return new Promise((resolve,reject) => {
    if (!dialogVue){
      dialogVue = createDialog()
    }
    for (let k in options){
      dialogVue[`m_${k}`] = options[k]
    }
    dialogVue.onShow();
    dialogVue.onClose = function(){
      dialogVue.show = false;
      reject();
    };
    dialogVue.onConfirm = function(){
      dialogVue.show = false;
      resolve();
    }
  })
}

function confirm(title,message,btns) {
  let options = {
    title,
    message,
    showConfirmButton: true,
    showCancelButton: true
  };
  if (btns){
    if (typeof btns === 'string') options.confirmButtonText = btns;
    else {
      options.confirmButtonText = btns[0];
      btns[1] && (options.cancelButtonText = btns[1]);
    }
  }
  return setDialog(options)
}
function alert(title,message,btn) {
  let options = {
    title,
    message,
    showConfirmButton: true,
    showCancelButton: false
  };
  btn && (options.confirmButtonText = btn);
  return setDialog(options)
}

export default {
  confirm,
  alert
}
